Problem
【TJOI2015】弦论
Description
对于一个给定长度为的字符串,求它的第小子串是什么。
Input
第一行是一个仅由小写英文字母构成的字符串。
第二行为两个整数和,为则表示不同位置的相同子串算作一个,则表示不同位置的相同子串算作多个。的意义如题所述。
Output
输出仅一行,为一个数字串,为第小的子串。如果子串数目不足个,则输出。
Sample Input
1 | aabc |
Sample Output
1 | aab |
标签:后缀自动机
Solution
后缀自动机的模板题。
对于两个询问的找到第大,预处理出从每个状态节点向后有多少种符合规则的字符串,然后每次选择走哪个字符即可。
关于预处理:
- 对于,即计算后缀自动机所形成的上有多少条从初始状态出发路径,将每一个状态节点初值赋为后按拓扑序在上即可。
- 对于,类似上面,也是按拓扑序在上作,只是此时只有表示原字符串每个前缀结束状态的节点的初值为。
Code
1 |
|